/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.eam.persitencia.dao.Interfaz;

import co.edu.eam.persitencia.entidades.Consulta;
import co.edu.eam.persitencia.entidades.DetalleFormulaMedica;
import co.edu.eam.persitencia.entidades.DetalleOrdenMedica;
import co.edu.eam.persitencia.entidades.FormulaMedica;
import co.edu.eam.persitencia.entidades.OrdenMedica;
import co.edu.eam.persitencia.entidades.Procedimiento;
import co.edu.eam.persitencia.entidades.Remision;
import co.edu.eam.persitencia.enumeraciones.TipoProcedimietoEnum;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Erika
 */
public interface IDAOConsulta {

    /**
     * interfaz para crear un procedimiento
     *
     * @param procedimiento
     * @throws Exception
     */
    public void crearProcedimiento(Procedimiento procedimiento) throws Exception;

    /**
     * interfaz para crear un a consulta
     *
     * @param consulta
     * @throws Exception
     */
    public void crearConsulta(Consulta consulta) throws Exception;

    /**
     * interfaz para uscar una consulta
     *
     * @param id de la consulta
     * @return una consulta
     * @throws Exception
     */
    public Consulta buscarConsulta(long id) throws Exception;

    /**
     * interfaz para eliminar una consulta
     *
     * @param consulta
     * @throws Exception
     */
    public void eliminarConsulta(Consulta consulta) throws Exception;

    /**
     * interfaz para editar un procedimiento
     *
     * @param procedimiento
     * @throws Exception
     */
    public void editarProcedimiento(Procedimiento procedimiento) throws Exception;

    /**
     * interfa para buscar un procedimiento
     *
     * @param id del procedimiineto
     * @return un procedimiento
     * @throws Exception
     */
    public Procedimiento buscarProcedimiento(long id) throws Exception;

    /**
     * interfaz para eliminar un procedimiento
     *
     * @param procedimiento objeto procedimieto
     * @throws Exception
     */
    public void eliminarProcedimiento(Procedimiento procedimiento) throws Exception;

    /**
     * interfaz para crear la formulaMedica
     *
     * @param formulaMedica
     * @throws Exception
     */
    public void crearFormulaMedica(FormulaMedica formulaMedica) throws Exception;

    /**
     * interfaz para crear la orden medica
     *
     * @param ordenMedica
     * @throws Exception
     */
    public void crearOrdenMedica(OrdenMedica ordenMedica) throws Exception;

    /**
     * Metodo que lista a todos los procedimientos
     *
     * @return un list con todos los procedimientos
     * @throws Exception
     */
    public List<Procedimiento> listar() throws Exception;

    /**
     * metodo que lista a todas las remisiones de una consulta
     *
     * @return un list de remisiones de una consulta
     * @throws Exception
     */
    public List<Remision> listarRemisionConsulta() throws Exception;

    /**
     * metodo que lista a todas las formulas medica de una consulta
     *
     * @param id de la formula medica
     * @return un list de FormulaMedica por consulta
     * @throws Exception
     */
    public List<FormulaMedica> listarFormulaMedicaConsulta(long id) throws Exception;

    /**
     * metodo que lista a todas las consulta por fecha
     *
     * @return un list de consultas por fechas
     * @throws Exception
     */
    public List<Consulta> listarFecha(Date fecha) throws Exception;

    /**
     * metodo que lista las consultas por paciente
     *
     * @return un list de consultas por paciente
     * @throws Exception
     */
    public List<Consulta> listarConsultaPaciente(String documento) throws Exception;

    /**
     * metodo que lista DetalleFormulaMedica por formlaMedica
     *
     * @return un list de DetalleFormulaMedica
     * @throws Exception
     */
    public List<DetalleFormulaMedica> listarDetalleFormulamedica() throws Exception;

    /**
     * metodo que listar los DetalleOrdenMedica por orden medica
     *
     * @return un list de DetalleOrdenMedica
     * @throws Exception
     */
    public List<DetalleOrdenMedica> listarDetalleOrdenMeica() throws Exception;

    /**
     * metodo que lista las OrdenMedica por consulta
     *
     * @return un list de OrdenMedica
     * @throws Exception
     */
    public List<OrdenMedica> listarOrdenMedicaConsulta(long id) throws Exception;

    /**
     * interfaz que edita una consulta
     *
     * @param consulta
     * @throws Exception
     */
    public void editarConsulta(Consulta consulta) throws Exception;

    public OrdenMedica buscarOrdenMedica(long id) throws Exception;

    public FormulaMedica buscarFormulaMedica(long id) throws Exception;

    public Remision buscarRemision(long id) throws Exception;

    public void crearRemision(Remision remision) throws Exception;
    
     public DetalleFormulaMedica buscarDetalleFormulaMedica(long id)throws Exception;
     
     public void crearDetalleFormulaMedica(DetalleFormulaMedica detalle)throws Exception;
     
      public List<Consulta> listarConsultasProcedimiento(TipoProcedimietoEnum tipo)throws Exception;
       public List<Remision> listarRemisionesEspecialidades(long id)throws Exception;
}
